package com.mfcxy.serviceImpl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import com.mfcxy.entity.Type;
import com.mfcxy.mapper.ITypeMapper;
import com.mfcxy.service.ITypeService;

/**
 * 分類
 * 
 * @author mfcxy
 *
 */
@Service
public class TypeService extends BaseService implements ITypeService {

	@Autowired
	private ITypeMapper typeMapper;

	/**
	 * 新增分類
	 * 
	 * @param type
	 * @return
	 */
	@Override
	@CacheEvict(value = "blog" , allEntries = true)
	public int save(Type type) {
		return typeMapper.save(type);
	}

	/**
	 * 获取总数
	 * 
	 * @return
	 */
	@Override
	public int getCount(int id) {
		// TODO Auto-generated method stub
		return typeMapper.getCount(id);
	}

	/**
	 * 查询分類
	 * 
	 * @return
	 */
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mfcxy.service.IUserService#selctList()
	 */
	@Override
	public Map<String, Object> selctList(int p , int id) {
		// 查询总记录数
		int count = typeMapper.getCount(id);
		// 返回给控制器的map数据
		Map<String, Object> map = new HashMap<>();

		// 传递给usermapper sql参数
		Map<String, Object> mapparam = new HashMap<>();

		// 计算每页的开始记录数
		mapparam.put("first", getPage().getFirst(p));
		// 每页的记录数量
		mapparam.put("rowlist", getPage().getTotalRecords());
		//一级分类id
		mapparam.put("id", id);

		// 用户数据
		map.put("typelist", typeMapper.list(mapparam));
		// 当前分页数
		map.put("p", p);
		// 总页数
		map.put("page", getPage().getTotalPage(count));
		//分类id
		map.put("typeid", id);
		// 返回给控制器
		return map;
	}
	
	/**
	 * 根据id查询子分类
	 * @param id
	 * @return
	 */
	
	//建议的key值命名是    类名+方法名+参数
	// spel key生成规则参考网址：
	@Override
	@Cacheable(value = "blog")  
	public List<Type> listById(int id) {
		// TODO Auto-generated method stub
		return typeMapper.listById(id);
	}
	
	@CachePut(value = "blog") //如果修改缓存的注解不太好用，你可以考虑使用 api java代码的方式来操作缓存
	public List<Type> listByIdTest(int id) {
		// TODO Auto-generated method stub
		return typeMapper.listById(id);
	}
}
